package com.example.hubeiweb.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;


//作者；hzh

@WebFilter(filterName = "RoleFilter",urlPatterns = {"/*"})
public class RoleFilter implements Filter {

    /**
     * 在过滤器对象被销毁时调用
     */
    @Override
    public void destroy() {
        // 可以释放资源等操作
    }

    /**
     * 主要的过滤方法，实现对 request、response 进行过滤操作
     * @param req 请求对象
     * @param resp 响应对象
     * @param chain 过滤链
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        // 强制类型转换为 HttpServletRequest 和 HttpServletResponse
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;

        // 设置请求和响应的字符编码为 UTF-8
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        // 获取请求的 URI
        String requestURI = request.getRequestURI();

        // 简单的权限验证示例
        // 这里可以根据实际需求，根据请求的 URI 或其他条件进行不同的权限验证
        if (requestURI.contains("login")) {
            chain.doFilter(req, resp);
        }else {
            HttpSession session = request.getSession();
            Object user = session.getAttribute("userInfo");
            if (user == null) {
                response.sendRedirect("./login.jsp");
            }else {
                chain.doFilter(req, resp);
            }
        }
    }

    /**
     * 在拦截器对象被初始化时调用的方法
     * @param config 过滤器配置对象
     * @throws ServletException
     */
    @Override
    public void init(FilterConfig config) throws ServletException {
        // 可以获取初始化参数等操作
    }
}